package com.principles.behavior.template;

/**
 * @Description 模板模式：定义了一个操作中算法的框架，而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
 *
 * @Date 2025/1/28 12:57
 **/
public class TemplatePattern {
    public static void main(String[] args) {
        Cooking cookingFood = new CookingFood();
        cookingFood.cook();
    }
}

// 模板类
abstract class Cooking{
    protected abstract void step1();
    protected abstract void step2();
    protected abstract void step3();

    // 模板方法
    public void cook(){
        System.out.println("第一步");
        step1();
        System.out.println("第二步");
        step2();
        System.out.println("第三步");
        step3();
    }
}

class CookingFood extends Cooking{

    @Override
    protected void step1() {
        System.out.println("下锅");
    }

    @Override
    protected void step2() {
        System.out.println("放菜");
    }

    @Override
    protected void step3() {
        System.out.println("出锅");
    }
}